package com.zofer.study.string;

import java.util.Stack;

/**
 * 括号序列
 * 题目描述：给出一个仅包含字符'(',')','{','}','['和']',的字符串，判断给出的字符串是否是合法的括号序列
 * 括号必须以正确的顺序关闭，"()"和"()[]{}"都是合法的括号序列，但"(]"和"([)]"不合法
 */
public class BracketSequence {
    public boolean isValid (String s) {
        if(s.length()%2 != 0){
            return false;
        }
        Stack<Character> st = new Stack<Character>();
        char[] sArr = s.toCharArray();
        for(int i = 0;i < s.length();i++){
            char c = sArr[i];
            if(c == '('){
                st.push(')');
            }else if(c == '['){
                st.push(']');
            }else if(c == '{'){
                st.push('}');
            }else if(st.empty() || c != st.peek()){
                return false;
            }else{
                st.pop();
            }
        }
        return st.empty();
    }
}
